package org.example.listener;

import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
 * 我们通过messageModel = MessageModel.BROADCASTING 指定消费模式为广播消费。(默认集群模式)
 * 由于一个实例中不能存在相同的consumerGroup，那么我们可以将该程序分别用两个端口启动两次，或者再写一个消费的程序，用以下的消费者代码。
 * 那么启动的这两个程序都会打印： BroadcastListener收到消息：MqMessage(name=广播消息, msg=这是广播消息)
 *
 * @author : Charles
 * @date : 2021/6/10
 */
@Slf4j
@Component
@RocketMQMessageListener(
        topic = "broadcast_topic",
        messageModel = MessageModel.BROADCASTING,//指定为广播消费
        consumerGroup = "broadcast_group")
public class BroadcastListener implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        log.info("{}收到消息：{}", this.getClass().getSimpleName(), message);
    }

}
